<?php 
/**
 * ... ...
 * ... ...
 *
 */ 



// 载入父 类 
//<<[UnmodifiableBlock.Start]::Include Parent Class::>>//
JCAT_Package::ImportClass('JCAT_UIGtkCtrlTree',JCAT::PACKAGE_UICTRLGTK) ;
//<<[UnmodifiableBlock.End]::Include Parent Class::>>//

// 载入所需的 数据校验器 类 
//<<[UnmodifiableBlock.Start]::Include Data Verifier Class::>>//

//<<[UnmodifiableBlock.End]::Include Data Verifier Class::>>//

/**
 * JCAT_UIGtkCtrlTree 类型UI控件 MsgType 
 * 
 * @access	public
 * @author	由 JeCat PHP Toolbox 产生 
 */
class MsgType 
	//<<[UnmodifiableBlock.Start]::Extends::>>//
	extends JCAT_UIGtkCtrlTree 
	//<<[UnmodifiableBlock.End]::Extends::>>//
{
	/**
	 * MsgType类 的 构造函数 
	 * 
	 * @access	public
	 * @return	void
	 */
	public function MsgType()
	{
		// 初始化 父类 
		//<<[UnmodifiableBlock.Start]::Init Parent Class::>>//
		$this->JCAT_UIGtkCtrlTree(__CLASS__,JCAT_Language::Sentence("*"),'LstMsgType') ; 
		//<<[UnmodifiableBlock.End]::Init Parent Class::>>//

		// 创建并载入 数据校验器 
		//<<[UnmodifiableBlock.Start]::Data Verifier::>>//

		//<<[UnmodifiableBlock.End]::Data Verifier::>>//


		// 在此添加 初始化 代码 
		// TODO ... ...

	}
	
	/**
	 * 创建一个  GtkTreeModel 模型  
	 * 
	 * @access	public
	 * @return	void
	 */
	public function CreateModel()
	{
		//<<[UnmodifiableBlock.Start]::Create Model::>>//
		$aModel = new GtkTreeStore(
			Gtk::TYPE_STRING
			) ;
		//<<[UnmodifiableBlock.End]::Create Model::>>//
		
		// 在此添加代码  
		// TODO ... ...
		$aModel->append(null,array('MSGMVC'));
		$aModel->append(null,array('MSGMVC_OK'));
		$aModel->append(null,array('MSGMVC_BAD'));
		$aModel->append(null,array('MSGMVC_DEBUG'));
		
		$this->CreateEmptyLine($aModel) ;
		
		return $aModel ;
	}
	
	/**
	 * 初始化  GtkTreeView 的列  
	 * 
	 * @access	public
	 * @return	void
	 */
	public function InitializeColumns()
	{
		// 取得视图 
		$wndTreeView = $this->GetMainWidget() ;
		JCAT_ASSERT::ASSERT_INSTANCE($wndTreeView,'GtkTreeView',
					JCAT_Language::SentenceEx('UI控件“%”的主窗体尚未创建，在正常情况下  InitializeColumns()不应该被直接调用，UI控件的主窗体在创建之时，会自动调用此方法。','JCAT',null,$this->GetName())) ;

		// 设置 视图上的 各列 
		//<<[UnmodifiableBlock.Start]::Setting Columns::>>//
		// 视图列：消息类型
		$aRenderForColumn0 = new GtkCellRendererText() ;
		$aRenderForColumn0->set_property('editable',true) ;
		$aRenderForColumn0->connect('edited',array($this,'OnTextEdit'),self::CLM_MSGTYPE) ;
		$wndColumn0 = new GtkTreeViewColumn(JCAT_Language::Sentence('消息类型'),$aRenderForColumn0,'text',self::CLM_MSGTYPE) ;
		$wndTreeView->append_column($wndColumn0) ;
		//<<[UnmodifiableBlock.End]::Setting Columns::>>//
		

		// 在此添加 代码 
		// TODO ... ...
		
	}

	
	/**
	* what's this
	*
	* @access public
	* @return void
	*/
	public function OnUICtrlChanged()
	{
		if( !$this->IsEnableUICtrlChangedEvent() )
		{
			return ;
		}
	
		// 父类
		parent::OnUICtrlChanged() ;
		
		// 暂停事件
		$bOldValue = $this->EnableUICtrlChangedEvent(false) ;
		
		// 清除 空Item
		$aIterator = $this->CreateItemIterator() ;
		$aModel = $this->GetGtkModel() ;
		$aIterator->First() ;
		while( !$aIterator->IsDone() )
		{
			$aItem = $aIterator->Current() ;
			
			$sPath = $aModel->get_value($aItem,self::CLM_MSGTYPE) ;
			$sPath = trim($sPath) ;
			
			if( $sPath==='' )
			{
				$aModel->remove($aItem);
			}
			
			$aIterator->Next() ;
		}
		
		// 恢复事件
		$this->EnableUICtrlChangedEvent($bOldValue) ;
		
		// 增加
		$this->CreateEmptyLine($aModel) ;
	}

	/**
	 * what's this
	 * 
	 * @access	private
	 * @param	$aModel		GtkTreeStore		what's this
	 * @return	void
	 */
	protected function CreateEmptyLine(GtkTreeStore $aModel)
	{
		// 暂停事件
		$bOldValue = $this->EnableUICtrlChangedEvent(false) ;
		
		$aModel->append(null,array('')) ;
		
		// 恢复事件
		$this->EnableUICtrlChangedEvent($bOldValue) ;
	}
	
	// 为 视图的列 定义常量 
	//<<[UnmodifiableBlock.Start]::Define Column Consts::>>//
	const CLM_MSGTYPE = 0 ;
	//<<[UnmodifiableBlock.End]::Define Column Consts::>>//


}






?><?
/**
 * [注意!!]
 *	以下内容由 JCAT PHP Toolbox 自动维护，手动更改的内容会被 JCAT PHP Toolbox 抹除，
 *	同时还可能破坏格式，导致 JCAT PHP Toolbox 无法正常读取。
 */
/*<<[UnmodifiableBlock.Start]::Coder Dialog Data::>>&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&//
<<{{DocumentClass:UICtrlGtkTreeDoc}}>>
eCVEQW1SS24lREIwJTE0JURDJTE3JUU4JTIxJUEyZSU4MVolMUYlM0JtQyUwNSUwMSU1QyVGQVMlQTklOTYrJUM3JTkyJThBJUFFJTBDRmJjJURBJUI0ZCU4OExsQyVEMCVBMiVCQiUwMCVCOUMlQUZQdCVEM00lQ0YlRDMlRjQlMUElN0QlRDQlMjclRjUlQTIlOEIlMjclODglOUM3JThGM0MlMTJkJUExUiVBMCUwMSVE
MkZEJTEyJUNEJTI2JUU4JUFEWiU5QiUxN0glOEIlMUMlMkMlMEIlRUVsdyU5Q25pJTI2JUMzJUUzJThFajZDJUE2JTBEJUYweSUwN2NOJTg0JTA4JTg4JTVDJTI5JUFBJTg5SiU4NiUwQyVDMCUyRiUwMCVEN1clRjklOTYlRUElODRTJUFBJTA3RSVCRSVBNiU4OSVENCU1RCU4QSU4OSVENCU4MyUwRkElOTglRTclRkMl
MjYlM0YlRTg1JTlCJTBBJTFEJUU3JTI5LSVFMCU5QiVDOSUyMiVFNyUxQyU3RSU5RExIJTkyJTI1JUI0JUQ3JTlDJTIyJUY0RHUlRjYlM0NxJUFCZCVGNHYlQUIlOURmVyVBMCVDMyVFOHQlRjhkJTBCJUVBJTA0JUE4JUQ3JURBJTI2JUI1JUZBJTg3JTdGZFlaJUVGJUJDQyU5QSU4QiU4NyVFMTJyJUE2ciVBMyU5MCVC
MCVBMCUxRCUxMyVFNyVGQ24lOUIlODklMTMlMkJtJTFDJTQwSlYlOEMlQTclMDUlQ0QlMTRoJUEwJUIyaiU4QyU5QSUxNiVEMiU5RSU3RSUzRSUzQyU3RCVGRCVGRSVFNyVDNyVBRiVERiVERiUxRSU5RiUwM3olODM0JTk4JThGUCVGODklMTglMkYlMTclRTElQjUlRTNPJTE1ZiVEOXUlRDYlMjElM0RIJUI1JUVDJURC
NyVEMCVDRSVEMCU0MFFMJTEwMCVGMyU5NiVERWIlQUFIJTBBJTNFJTg3em0lREFVJUQ1JUU4biU5Q3glODRlJTlGWHpLJUE1MyVFQSUzQyVDRSU4NCUzQ3VtdSVCRCU5MSVEMyVFNSUwMiVDM18lRDUlOTElQzElMUMlN0NiJUU1JUQ5Z18lRjklODRrJUFCJTgzViUwQyVDQmglOTMlMUElMTYlRTAlRkQlOUUlOEUlRjIl
RTROJUJEJTAzJUFEJUIxJTkwJUI1JTgzLSVBQnklM0ExLSVEOCUxN0YlMEIlQUMuMCU5MSUyQyVDRiVEQSVDNiVCNCU3RVclQTAlQTAlMEYlOTklNUMlNUUlOTZlNyVBOCVCRSU3QyVGNCVCRiUyMyVBQSVFQSVFQSVFQSVFNSUwQiU4QSVFMyVGMSUzQyUxMiU3QyVCRSU5RSUxRiVERCVDODElRENoJUYyJTdFJUM2YiVF
QyVBRiUxRCVEOCU5QiUyQyU5MiVDRCU4NiU3QiUxQiVERiU4RHElOEMlQkQlQ0QlQTAlRUIlREIlQUIlM0UlQTglMDklRDQlRDglMEQlODclMjYlRDQlM0UlQzJRJUZGJTFBRyU3QiVGRiUxOCUxRCVCQyVFMSVEOSUxOURRVSU3RiUwMSUyMlolRjglQjk!
//&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&<<[UnmodifiableBlock.End]::Coder Dialog Data::>>*/
?>